#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
	//1 创建fd
	int fds[2];


	//2 创建管道
	int r = pipe(fds);
	if(-1 == r) 
		printf("创建管道失败:%m\n"),exit(-1);
	printf("创建管道%m\n");


	//3 使用管道
	//用户终端输入  传递到另一个进程  输出
	if(fork())
	{				//父进程
		char temp[256];
		while(1)
		{
			//读管道  存入数组中
			r = read(fds[0],temp,256);
			//添加结束符号
			temp[r] = 0;

			//输出到终端
			printf("\n父进程输出>> %s\n",temp);

			//判断进程结束关键字：
			if(0 == strcmp("quit",temp))
			{
				sleep(1);
				printf("父进程结束!\n");
				exit(1);
			}
		}
	}
	else
	{				//子进程
		char buff[1024];
		while(1)
		{
			//从终端输入数据  存储到数组里
			printf("子进程输入>> ");
			scanf("%s",buff);
			
			//写管道    发送到 父进程
			write(fds[1],buff,strlen(buff));

			//判断进程结束关键字：
			if(0 == strcmp("quit",buff))
			{
				printf("子进程结束!\n");
				break;
			}
		}
		
	}


	//4 关闭
	close(fds[0]);
	close(fds[1]);

	return 0;
}